package reseau;

public class Vecteur2D extends Coordonnees2D 
{
	double norme;
	
	public Vecteur2D(double x, double y) 
	{
		super(x, y);
		this.norme = Math.sqrt(x*x+y*y);
	}

	public Vecteur2D(Coordonnees2D origine, Coordonnees2D destination) 
	{
		super(destination.x-origine.x, destination.y-origine.y);
		this.norme = Math.sqrt(x*x+y*y);
	}
	
	public void copy(Vecteur2D copie)
	{
		this.x = copie.x;
		this.y = copie.y;
		this.norme = copie.norme;
	}
	
	public void set(Coordonnees2D origine, Coordonnees2D destination)
	{
		this.x = destination.x-origine.x;
		this.y = destination.y-origine.y;
		this.norme = Math.sqrt(x*x+y*y);
	}
	
	public void add(Coordonnees2D c)
	{
		super.add(c);
		this.norme = Math.sqrt(x*x+y*y);
	}
	
	public double scalaire(Vecteur2D v)
	{ return this.x*v.x+this.y*v.y; }
	
	public boolean estNul()
	{ return (this.x==0 && this.y==0); }
	
	public double getNorme() 
	{ return norme;	}

	public void fois(double facteur)
	{
		this.x *= facteur;
		this.y *= facteur;
		this.norme *= facteur;
	}
	
	public void normaliser(double nouvelleNorme)
	{
		if(nouvelleNorme>0)
		{
			if(this.norme!=0)
			{
				double rapportNorme = nouvelleNorme/this.norme;
				
				this.x *= rapportNorme;
				this.y *= rapportNorme;
			}
			else
			{
				this.x = 1;
				this.y = Math.sqrt((nouvelleNorme*nouvelleNorme)-1);
			}
			
			this.norme = nouvelleNorme;
		}
		else
		{
			this.x = this.y = this.norme = 0;
		}
	}
}
